جزوه · فصل پنجم · جلسه ۲ · راه‌اندازی بوت لینوکس ← بازگشت به فهرست
📘 فصل پنجم · جلسه ۲ راه‌اندازی بوت لینوکس
📅 تاریخ: چهارشنبه، ۲۸ مرداد ۱۴۰۵ 👤 مدرس: محمد عابدینی 🐚 Zsh · 🐧 Debian (کالی) · 📦 Red Hat
🚀 قبل از شروع، یه مثال ساده:

فرآیند بوت لینوکس رو مثل روشن کردن یه ماشین تصور کن. اول باید کلید رو بزنی (BIOS/UEFI)، بعد موتور روشن بشه (Bootloader)، بعد موتور شروع به کار کنه (Kernel) و در نهایت ماشین آماده حرکت بشه (سیستم‌عامل). این جلسه دقیقاً همین مراحل رو بهت یاد میده!

▍ مقدمه

فرآیند بوت (Boot) در لینوکس، مجموعه مراحلی است که از لحظه روشن شدن سیستم تا آماده شدن برای ورود کاربر انجام می‌شود. در این جلسه، با چهار مرحله اصلی راه‌اندازی لینوکس آشنا می‌شوید و تفاوت بین BIOS و UEFI را یاد می‌گیرید.

▍ چهار مرحله اصلی راه‌اندازی لینوکس

🔹 مرحله ۱: بررسی سخت‌افزار

سرور روشن می‌شود و سخت‌افزار خود را چک می‌کند (POST). این کار توسط BIOS/UEFI انجام می‌شود.

🔹 مرحله ۲: اجرای Bootloader

برنامه Bootloader (مانند GRUB) اجرا می‌شود و کرنل (Kernel) را بارگذاری می‌کند.

🔹 مرحله ۳: بارگذاری کرنل

کرنل در RAM بارگذاری می‌شود و کنترل را به init (یا systemd) می‌دهد.

🔹 مرحله ۴: اجرای سرویس‌ها

سرویس‌ها و برنامه‌های پس‌زمینه برای استفاده اجرا می‌شوند و سیستم آماده ورود کاربر است.

▍ نمایش پیام‌های راه‌اندازی

• دستور dmesg

بعد از اجرای Bootloader، پیام‌های هسته با سرعت زیاد روی صفحه نمایش داده می‌شوند. برای مشاهده این پیام‌ها بعد از راه‌اندازی، از دستور dmesg استفاده می‌کنیم.

┌──(ya3in㉿kali)-[~] └─$ dmesg | head -20 [ 0.000000] Linux version 6.1.0-kali7-amd64 ... [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-6.1.0-kali7-amd64 ... [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009efff] usable ...

توضیح: dmesg پیام‌های kernel ring buffer را نمایش می‌دهد. این پیام‌ها شامل اطلاعات سخت‌افزاری، شناسایی دستگاه‌ها و وضعیت راه‌اندازی هستند.

💡 نکته:

پیام‌های بوت در kernel ring buffer ذخیره می‌شوند. هر تغییر جدید (مثل اضافه شدن دستگاه جدید) می‌تواند پیام‌های قبلی را پاک کند. dmesg آخرین پیام‌های بوت را نمایش می‌دهد.

• دستور journalctl

journalctl ابزار اصلی برای مشاهده لاگ‌های سیستم در توزیع‌های مبتنی بر systemd است. این دستور پیام‌های خطای سرویس‌ها را نمایش می‌دهد و معمولاً به دسترسی root نیاز دارد.

┌──(ya3in㉿kali)-[~] └─$ sudo journalctl -b | head -20

توضیح: -b پیام‌های مربوط به جلسه بوت فعلی را نمایش می‌دهد.

• فایل‌های لاگ بوت

توزیع‌های مختلف، پیام‌های بوت را در مکان‌های متفاوتی ذخیره می‌کنند:

┌──(ya3in㉿kali)-[~] └─$ cat /var/log/boot.log

توضیح: مشاهده محتوای فایل لاگ بوت (در صورت وجود).

▍ مقایسه BIOS و UEFI

🔴 BIOS (قدیمی)

  • در سرورها و سیستم‌های قدیمی استفاده می‌شود.
  • فقط می‌تواند یک سکتور (MBR) را بخواند و اجرا کند.
  • محدودیت باعث شده است که مراحل راه‌اندازی به چند بخش تقسیم شود.
  • از دیسک‌های بزرگتر از ۲ ترابایت پشتیبانی نمی‌کند.

🔵 UEFI (جدید)

  • از سال ۲۰۰۵ به عنوان جایگزین BIOS معرفی شد.
  • از پارتیشن ESP (با فرمت FAT) برای راه‌اندازی استفاده می‌کند.
  • سایز Bootloader در این روش بسیار بیشتر است.
  • از دیسک‌های بزرگتر از ۲ ترابایت پشتیبانی می‌کند.

• دستگاه‌های قابل بوت در BIOS

BIOS می‌تواند Bootloader را از دستگاه‌های زیر اجرا کند:

• نحوه کار BIOS با MBR

در زمان راه‌اندازی، BIOS به سراغ MBR (Master Boot Record) می‌رود که در اولین سکتور هارد دیسک قرار دارد و Bootloader را اجرا می‌کند. به دلیل محدودیت در ساختار، Bootloader باید بسیار کوچک باشد.

💡 نکته:

برای رفع مشکل راه‌اندازی در BIOS، در سال 1998 ساختار EFI و در سال 2005 ساختار UEFI ایجاد شد.

▍ پارتیشن ESP در UEFI

در سیستم‌های UEFI، پارتیشن ESP (EFI System Partition) با فرمت FAT (که توسط مایکروسافت توسعه داده شده است) برای ذخیره Bootloader استفاده می‌شود. لینوکس این پارتیشن را در مسیر /boot/efi Mount می‌کند.

┌──(ya3in㉿kali)-[~] └─$ lsblk | grep -i efi └─nvme0n1p5 259:5 0 977M 0 part /boot/efi

توضیح: پارتیشن /boot/efi مربوط به ESP است.

• بررسی حالت بوت UEFI

برای بررسی اینکه سیستم در حالت UEFI بوت شده است، از دستور زیر استفاده می‌کنیم:

┌──(ya3in㉿kali)-[~] └─$ ls /sys/firmware/efi

توضیح: اگر دایرکتوری /sys/firmware/efi وجود داشته باشد، سیستم در حالت UEFI بوت شده است. در غیر این صورت، در حالت BIOS بوت شده است.

✅ جمع‌بندی:
  • چهار مرحله بوت: بررسی سخت‌افزار → Bootloader → کرنل → سرویس‌ها
  • dmesg: نمایش پیام‌های هسته
  • journalctl: نمایش لاگ‌های systemd
  • BIOS: قدیمی، محدودیت در سایز Bootloader
  • UEFI: جدید، پشتیبانی از ESP و Bootloader بزرگتر
  • ESP: پارتیشن FAT در /boot/efi